ONCE page# 0001 next
2: COMMENT ⊗   VALID 00019 PAGES
3: C REC  PAGE   DESCRIPTION
4: C00001 00001
5: C00003 00002    BEGIN ONCE ONLY CODE
6: C00005 00003    SETUP LOCATIONS 40 THRU 61
7: C00007 00004    ONCE ONLY CODE - OPERATOR SETUP DIALOGUE
8: C00008 00005     HERE, WE MUST DISCOVER WHETHER WE HAVE BEEN CONFIGURED
9: C00011 00006     NOW WE SIT AND WAIT FOR P2 TO START UP, OR FOR THE OPERATOR TO
10: C00014 00007     HERE IS WHERE P2 STARTS
11: C00017 00008     WE GET HERE IF P2 IS A PDP-10
12: C00019 00009     FINISHED CONFIGURING, NOW CHECK DATE AND ALL
13: C00020 00010    ASK FOR TODAY'S DATE AND CONVERT
14: C00022 00011    GET TIME OF DAY
15: C00024 00012    DECIMAL INPUT ROUTINE - JAM
16: C00025 00013    IFN 0*FTDISK,<
17: C00027 00014    ROUTINE TO READ A LINE FROM OPERATORS CONSOLE
18: C00029 00015    ROUTINE TO TYPE A LINE ON OPERATOR CONSOLE
19: C00031 00016    CONSTANTS AND PUSH DOWN LIST
20: C00032 00017    206 RESTARTS -- USER AND EXEC MODE
21: C00037 00018    PUNCH SYSTEM LOADER WITH CURRENT LOC OF SYSTEM ON LIBRASCOPE
22: C00040 00019    DEFINE NPRINT(TAG,START,FINISH)
23: C00042 ENDMK
24: C⊗;
    ONCE page# 0002 next  prev
26: BEGIN ONCE ONLY CODE
27: SUBTTL  ONCE    1969 JAN 29     ;WITH MODS FOR DSKSER -RAS.
28: 
29: UUOFLK←←UUOLNK                 ;FIX THIS UP NOW (AT END OF SYSTEM)
30: 
31: LINKSR:
32:         MOVE TAC,[PUSHJ PDP,OUTCHS]     ;DWP FOR TTYSER
33:         MOVEM TAC,CONTYO                ;DWP
34:         MOVE TAC,[PUSHJ PDP,GETCHR]
35:         MOVEM TAC,CONTYI        ;DWP
36: LINKS1: PUSHJ PDP,APRCHK
37:         CONSZ TTY,20            ;WAIT FOR CTY
38:         JRST LINKS1
39:         MOVE AC1,ONCE           ;SAVE RETURN ADDR
40: 
41: IFN FTDDT,<
42: ;SAVE SYMBOLS FOR DDT. DDTSYM IS SET UP AT LOAD TIME.
43: 
44:         HLRO TAC1,DDTSYM        ;-LENGTH OF SYMBOL TABLE
45:         MOVNS TAC1              ;MAKE IT +
46:         HRL TAC,DDTSYM          ;SYMTAB BEGINS HERE
47:         HRRI TAC,BLTBEG         ;MOVE IT TO HERE
48:         BLT TAC,BLTBEG-1(TAC1)  ;THERE IT WENT
49:         MOVEI TAC,BLTBEG        ;TELL EXEC DDT WHERE
50:         HRRM TAC,DDTSYM         ;IT LOOKS AT 36
51:         MOVEI TAC,BLTBEG(TAC1)  ;END OF SYMBOL TABLE ...
52: >
53: IFE FTDDT,<
54:         MOVEI TAC,BLTBEG
55: >
56:         MOVEM TAC,SYSSIZ        ;IS TOP OF SYSTEM.
57:         JRST @AC1               ; EXIT NOW, STAGE LEFT
58: 
59: LIT
60: ↑↑BLTBEG←←.
    ONCE page# 0003 next  prev
62: ;SETUP LOCATIONS 40 THRU 61
63: 
64: LOC40:  0                       ;UUO PC
65:         JSR UUO0                ;TO UUO HANDLER
66:         JSR CH1
67:         JSP DAT,ERROR
68:         JSR CH2
69:         JSP DAT,ERROR
70:         JSR CH3
71:         JSP DAT,ERROR
72:         JSR CH4
73:         JSP DAT,ERROR
74:         JSR CH5
75:         JSP DAT,ERROR
76:         JSR CH6
77:         JSP DAT,ERROR
78:         JSR CH7
79:         JSP DAT,ERROR
80:         0                       ;UUO PC FOR TRAPS TO 60.
81:         JSR UUO2
82: 
83: P2LOC40:
84:         0                       ; P2 UUO'S COME HERE
85:         JSR UUO0+P2PID
86:         JSR P2CH1
87:         JSP DAT,ERROR
88:         JSR P2CH2
89:         JSP DAT,ERROR
90:         JSR P2CH3
91:         JSP DAT,ERROR
92:         JSR P2CH4
93:         JSP DAT,ERROR
94:         JSR P2CH5
95:         JSP DAT,ERROR
96:         JSR P2CH6
97:         JSP DAT,ERROR
98:         JSR P2CH7
99:         JSP DAT,ERROR
100:         0                       ; P2 UNDEF OPCODES COME HERE
101:         JSR UUO2+P2PID          ; JSR OFF TO UNDEF OPCODE HANDLER
    ONCE page# 0004 next  prev
103: ;ONCE ONLY CODE - OPERATOR SETUP DIALOGUE
104: 
105: ONCE:  0
106:         MOVSI TAC,40000
107:         MOVEM TAC,41            ;KLUDGE TO GET 6 INTO EXEC MODE
108:         SETZM   P2NUM           ;IT ISN'T THERE YET
109:         MOVE DAT,LINEP          ;SETUP LINE BYTE POINTER
110:         MOVE PDP,[XWD -ONCEPN,ONCEPD]
111:         MOVEI IOS,0             ;MAKE SURE SCNSER WILL TYPE ;JS
112:         MOVE TAC,[IDPB TEM,DAT] ;DWP FOR TTYSER
113:         MOVEM TAC,CONTYO        ;DWP
114:         MOVE TAC,[ILDB TEM,DAT]
115:         MOVEM TAC,CONTYI        ;DWP
116:         PUSHJ PDP,CRLF
117:         MOVEI TAC,CONFIG
118:         PUSHJ PDP,CONMES
119:         PUSHJ   PDP,CRLF
120: IFE FTDDT,<
121:         MOVEI TAC,NDDTM
122:         PUSHJ P,CONMES
123: >
124:         PUSHJ P,OPOUT
    ONCE page# 0005 next  prev
126: ; HERE, WE MUST DISCOVER WHETHER WE HAVE BEEN CONFIGURED
127: ; AND IF SO, EXACTLY HOW AND FOR WHAT REASON
128: 
129:         SETZM DETFLG
130:         JFCL 17,.+1             ; CLEAR ARITHMETIC FLAGS
131:         MOVEI TAC,1             ; IF THIS PRODUCES AR CRY 0, WE ARE A 10
132:         SOS TAC
133:         JCRY0 PDP10             ; P1 IS A TEN, HOW 'BOUT THAT?
134: 
135: ; P1 IS A PDP-6, TELL THE WORLD ABOUT IT
136: 
137:         MOVEI TAC,1B20          ; PARITY IS BIT 20 ON THE 6
138:         HRRM TAC,PARCON
139:         MOVEI TAC,132237                ; THIS ENABLES PARITY ON THE 6
140:         HRRM TAC,PICON
141:         MOVEI TAC,6             ; PUT A 6 IN P1NUM
142: P1OK:   PUSH PDP,TAC            ; PUT FUTURE P1NUM ON STACK
143:         MOVE TAC,[XWD LOC40,40] ; SET UP TO BLT IN THE INTERRUPT LOCATIONS
144:         BLT TAC,61
145:         MOVEI TAC,40            ; 40 IS OUR UUO TRAP LOCATION
146:         MOVEM TAC,UUOLOC+P1PID
147: ; REGARDLESS OF WHETHER P1 IS A 6 OR A 10, WE GET HERE
148: 
149: P1GO:   POP PDP,P1NUM           ; SET UP OUR PROCESSOR NUMBER
150:         CONO DCB,7              ; SEE IF THE DCB IS ON LINE
151:         CONSZ DCB,7             ; SEE IF IT GIVES US BACK A 7
152:         JRST ONEP               ; WE HAVE DCB, P2 HAS NOTHING
153:         MOVEI TAC,100000        ; IS P2 STARTED?
154:         SKIPN P2NUM
155:         SOJGE TAC,.-1
156:         SKIPE P2NUM
157:         JRST P1G1               ;YES. SKIP CTY TYO
158:         MOVE DAT,LINEP          ; ASK OPERATOR TO START UP P2
159:         MOVEI TAC,[ASCIZ /START OTHER PROCESSOR AT /]
160:         PUSHJ PDP,CONMES
161:         MOVEI TAC,SYSDSP+4
162:         PUSHJ PDP,OCTPNT
163:         MOVEI TAC,[ASCIZ /, OR TYPE <CR>./]
164:         PUSHJ PDP,CONMES
165:         PUSHJ PDP,CRLF
166:         PUSHJ PDP,OPOUT         ; DUMP CTY BUFFER ONTO THE CTY
    ONCE page# 0006 next  prev
168: ; NOW WE SIT AND WAIT FOR P2 TO START UP, OR FOR THE OPERATOR TO
169: ; TELL US IT ISN'T GOING TO START
170: 
171: P1G1:   SKIPN P2NUM
172:         CONSZ CTY,40            ; HAS HE TYPED CR?
173:         CAIA
174:         JRST P1G1
175:         CONO CTY,3000+SCNCHN    ; CLEAR CTY
176:         SKIPE P2NUM             ; HAS P2 STARTED ALREADY?
177:         JRST P2OK               ; YES, LEAVE
178: 
179:         MOVEI TAC,P2XFR+1       ; MAKE SURE NO ONE STARTS P2 NOW
180:         HRRM TAC,P2XFR1
181:         MOVE TAC,[JRST 4,204]
182:         MOVEM TAC,204           ;EVEN FROM HERE
183:         MOVE DAT,UUOLOC
184:         XORI DAT,101            ;OTHER PROC'S 41
185:         HRLI DAT,-1(TAC)
186:         MOVEM TAC,-1(DAT)       ;ZAP OTHER PROCESSORS TRAP LOCS
187:         BLT DAT,61-41(DAT)      ;NORMALLY A NO-NO BUT INTS OFF HERE
188:         MOVE DAT,LINEP
189:         PUSHJ PDP,CRLF          ; ACKNOWLEDGE RECEIPT OF THE C.R.
190:         PUSHJ PDP,OPOUT
191: 
192: ; HERE, WE MUST DETACH THE AD AND DIS, BECAUSE WE ARE THE ONLY
193: ; PROCESSOR AND WE DON'T HAVE THEM
194: 
195:         SETOM DETFLG            ; TELLS SYSINI TO DETACH THESE
196: 
197:         JRST ONEP               ; NOW GO CHECK CRK
198: 
199: ; WE GET HERE IF P1 IS A PDP-10
200: 
201: PDP10:  MOVEI TAC,1B19          ; THIS IS THE PARITY BIT
202:         HRRM TAC,PARCON
203:         MOVEI TAC,652237        ; AND THIS ENABLES IT
204:         HRRM TAC,PICON
205:         MOVEI TAC,=10           ; PUT 10 IN P1NUM
206:         CONSO APR,MAOFF         ; ARE WE IN MA TRP OFFSET?
207:         JRST P1OK               ; NO, JUST LIKE A PDP-6
208:         TLO TAC,MAOFF           ; SET BIT IN P1NUM SAYING JUST THAT
209:         PUSH PDP,TAC            ; PUT P1NUM ON THE STACK
210:         MOVE TAC,[JSR P2START-1]
211:         MOVEM TAC,204           ;TIME TO LET THE 6 GO
212:         MOVEM TAC,41            ;PERHAPS FROM HERE
213:         MOVE TAC,[XWD LOC40,140]
214:         BLT TAC,161             ; PUT INTERRUPT LOCATIONS IN RIGHT PLACE
215:         MOVEI TAC,140           ; AND THIS IS OUR UUO TRAP LOCATION
216:         MOVEM TAC,UUOLOC+P1PID
217: 
218: REPEAT 0,<                      ;IT STOPPED WORKING!!! 4-13-74
219:         CONO    PTR,120         ;THIS IS THE PTR REVERSE HACK
220: PTREV1: CONSZ   PTR,20          ;WAIT FOR ¬BUSY
221:         JRST    .-1
222:         DATAI   PTR,TAC
223:         ANDI    TAC,300
224:         CAIN    TAC,200         ;SKIP IF ¬ A BINARY TAPE
225:         JRST    PTREV1
226: >                               ;END REPEAT 0
227: 
228:         JRST P1GO
    ONCE page# 0007 next  prev
230: ; HERE IS WHERE P2 STARTS
231: ; WE MUST DECIDE IF THIS IS A LEGAL CONFIGURATION OR NOT
232: 
233:         0                       ;JSR HERE TO ENTER EXEC MODE
234: P2START:
235:         MOVE TAC,[JRST P2INI]   ; TELL SYSTEM WE HAVE INITIALIZED
236:         MOVEM TAC,SYSDSP+4
237:         JFCL 17,.+1             ; CLEAR AR FLAGS
238:         MOVE PDP,[XWD -P2PLN,P2PDL]
239:         MOVEI TAC,1             ; A PDP-10 SETS AR CRY 0
240:         SOS TAC                 ; UPON ARRIVING AT 0
241:         JCRY0 P2P10             ; WE ARE A PDP-10
242: 
243: ; HERE, P2 IS A PDP-6. MAKE SURE P1 IS IN TRP OFFSET
244: 
245: P2SZZ1: MOVE DAT,P1NUM
246:         JUMPE DAT,.-1           ; WAIT UNTIL P1 IS ON THE AIR
247:         CAMN DAT,[XWD MAOFF,=10]
248:         JRST P2PAR
249: ULOSE:  MOVE TAC,ILLPNT
250:         JSR DDTTYPE
251:         HALT ULOSE
252: 
253: ILLPNT: POINT 7,.+1
254:         ASCIZ/
255: ππππPDP-10 IS NOT IN MA TRAP OFFSET MODE!!!!
256: /
257: 
258: 
259: P2PAR:  MOVEI DAT,1B20          ; PDP-6 PARITY BIT
260:         HRRM DAT,P2RCON
261:         MOVEI TAC,40            ; UUO TRAP LOCATION
262:         MOVEM TAC,UUOLOC+P2PID
263:         MOVEI TAC,132237                ; PI CONO TO SET UP PARITY ENABLE
264:         HRRM TAC,P2CON
265:         MOVEI DAT,6             ; PUT 6 IN P2NUM
266:         MOVE TAC,[XWD P2LOC40,40]
267:         BLT TAC,61              ; SET UP INTERRUPT LOCATIONS
268: 
269: P2GO:   CONO DCB,7              ; SEE IF DCB IS ON LINE
270:         CONSZ DCB,7
271:         JRST P2WENT             ; HE'S THERE, GO ON.
272: 
273:         MOVE TAC,DCBPNT
274:         JSR DDTTYPE             ; TELL THEM
275:         JRST P2WENT
276: 
277: DCBPNT: POINT 7,.+1
278:         ASCIZ/
279: ππππDEVICE 204 DOES NOT ANSWER!!!!!
280: /
281: 
282: 
283: P2WENT: PUSH PDP,DAT
284:         MOVE TAC,[XWD ALTSAV,PTPSAV]
285:   BLT TAC,ALTSAV-1        ; SET UP DEVICE AC SAVE INDIRECT LOCATIONS
286:         PUSHJ PDP,DATIME        ; SEE IF CRK WORKS
287:         JRST P2GO1              ; NO, SKIP IT
288:         MOVEM DAT,CRKDAT        ; YES, SET STARTING DATE
289:         MOVEM ITEM,CRKTIM
290: 
291: P2GO1:  POP PDP,P2NUM
292:         JRST P2XFR1
    ONCE page# 0008 next  prev
294: ; WE GET HERE IF P2 IS A PDP-10
295: 
296: P2P10:  MOVE DAT,1B19
297:         HRRM DAT,P2RCON
298:         MOVEI TAC,652237
299:         HRRM TAC,P2CON
300:         MOVE DAT,P1NUM
301:         CONSO APR,MAOFF         ; ARE WE IN TRP OFFSET?
302:         JRST P2P10A             ; NO, CONTINUE
303:         TLNN DAT,MAOFF          ; IS P1 IN TRP OFFSET?
304:         JRST P2P10X             ; OK
305:         MOVE TAC,BOTHPN
306:         JSR DDTTYPE
307:         HALT .-2
308: 
309: BOTHPN: POINT 7,.+1
310:         ASCIZ/
311: ππππHELP, WE'RE BOTH IN MA TRAP OFFSET MODE!!!
312: /
313: 
314: P2P10X: MOVE DAT,[XWD MAOFF,=10]
315:         MOVEI TAC,[XWD P2LOC40,140]
316:         BLT TAC,161             ; LOAD UP INTERRUPT LOCATIONS
317:         MOVEI TAC,140           ; THIS IS OUT UUO TRAP LOCATION
318:         MOVEM TAC,UUOLOC+P2PID
319:         JRST P2GO
320: 
321: P2P10A: TLNE DAT,MAOFF
322:         JRST P2P10B
323:         MOVE TAC,NONPNT
324:         JSR DDTTYPE
325:         HALT .-2
326: 
327: NONPNT: POINT 7,.+1
328:         ASCIZ/
329: ππππNO-ONE IN MA TRAP OFFSET MODE!!!!
330: /
331: 
332: P2P10B: MOVEI DAT,=10           ; SET P2NUM TO 10
333:         MOVEI TAC,[XWD P2LOC40,40]
334:         BLT TAC,61              ; BLT IN INTERRUPT TRAP LOCATIONS
335:         MOVEI TAC,40            ; THIS IS OUR UUO TRAP LOCATION
336:         MOVEM TAC,UUOLOC+P2PID
337:         JRST P2GO
    ONCE page# 0009 next  prev
339: ; FINISHED CONFIGURING, NOW CHECK DATE AND ALL
340: 
341: ONEP:   PUSHJ PDP,DATIME        ; DO WE HAVE THE CRK?
342:         JRST TBAD               ; NO, GET IT FROM OPERATOR
343:         JRST P2OK1
344: 
345: P2OK:   MOVE ITEM,CRKTIM        ; DOES P2 HAVE CRK?
346:         SKIPN DAT,CRKDAT
347:         JRST TBAD               ; NO, AGAIN GET IT FROM OPERATOR
348: P2OK1:  MOVEM ITEM,TIME
349:         MOVEM DAT,THSDAT
350:         JRST ONCE9
    ONCE page# 0010 next  prev
352: ;ASK FOR TODAY'S DATE AND CONVERT
353: ;DATE STORED AS ((Y-64)*12.+M-1)*31.+D-1
354: 
355: TBAD:   PUSHJ PDP,DATLOP
356:         JRST .-1
357: DATLOP: SETZM THSDAT
358:         MOVE DAT,LINEP
359:         MOVEI TAC,TODATE
360:         PUSHJ PDP,CONMES
361:         PUSHJ PDP,OPOUT
362:         PUSHJ PDP,GETLIN
363:         JRST DATLOP
364:         PUSH PDP,TAC            ;SAVE INPUT BYTE POINTER
365:         MOVEI IOS,11            ;STORE DATE TYPED IN ON TOP OF DATE OF SYSTEM
366:         MOVE ITEM,DATPTR        ;MAX. OF 11 CHAR. INCL. CR
367:                                 ;CLOBBER SYSDAT
368:         ILDB TAC1,TAC
369:         IDPB TAC1,ITEM
370:         CAIE TAC1,15
371:         SOJG IOS,.-3
372:         JUMPLE IOS,DATLOP       ;TOO MANY CHARS?
373:         MOVEI TAC1,0            ;STORE NULL ON TOP OF CR
374:         DPB TAC1,ITEM
375:         POP PDP,TAC             ;RESTORE INPUT BYTE POINTER
376:         PUSHJ PDP,DECIN         ;MONTH
377:         JRST DATLOP             ;ERROR
378:         SKIPE TAC1
379:         CAILE TAC1,=12
380:         JRST DATLOP
381:         SUBI TAC1,1
382:         IMULI TAC1,=31
383:         ADDM TAC1,THSDAT
384:         PUSHJ PDP,DECIN         ;DAY
385:         JRST DATLOP
386:         SKIPE TAC1
387:         CAILE TAC1,=31
388:         JRST DATLOP
389:         SUBI TAC1,1
390:         ADDM TAC1,THSDAT
391:         PUSHJ PDP,DECIN         ;YEAR
392:         JRST DATLOP
393:         CAIL TAC1,=68
394:         CAILE TAC1,=99
395:         JRST DATLOP
396:         SUBI TAC1,=64           ;YEAR ZERO
397:         IMULI TAC1,=12*=31
398:         ADDM TAC1,THSDAT
    ONCE page# 0011 next  prev
400: ;GET TIME OF DAY
401: 
402: 
403: 
404:         POP PDP,TAC
405:         PUSHJ PDP,TIMLOP
406:         JRST .-1
407: TIMLOP: SETZM TIME
408:         MOVE DAT,LINEP
409:         MOVEI TAC,TIMEM
410:         PUSHJ PDP,CONMES
411:         PUSHJ PDP,OPOUT
412:         PUSHJ PDP,GETLIN
413:         JRST TIMLOP             ;JUST A CR
414:         ILDB TAC1,TAC
415:         SUBI TAC1,60
416:         SKIPL TAC1              ;CHECK FIRST DIGIT OF HOUR
417:         CAILE TAC1,2
418:         JRST TIMLOP
419:         IMUL TAC1,[JIFSEC*=60*=60*=10]
420:         MOVEM TAC1,TIME
421:         ILDB TAC1,TAC
422:         SUBI TAC1,60            ;CONVERT TO BINARY
423:         SKIPL TAC1
424:         CAILE TAC1,=9
425:         JRST TIMLOP
426:         IMULI TAC1,JIFSEC*=60*=60
427:         ADDM TAC1,TIME
428:         PUSHJ PDP,DECIN
429:         JRST TIMLOP
430:         CAILE TAC1,=59
431:         JRST TIMLOP
432:         IMULI TAC1,JIFSEC*=60
433:         ADDM TAC1,TIME
434: ONCE9:  MOVSI TAC,(<JFCL>)
435:         MOVEM TAC,ONCEI
436: IFN 0*FTDISK,<
437:         DATAI APR,TAC           ;-1 IN KEYS GETS YOU
438:         AOJN TAC,LINKSR         ;THE REFRESH DIALOG.
439:         PUSHJ PDP,REF
440: >
441:         JRST LINKSR
    ONCE page# 0012 next  prev
443: ;;DECIMAL INPUT ROUTINE - JAM
444: 
445: DECIN:  ILDB TAC1,TAC           ; FIRST, SKIP NULLS, SPACES, AND TABS
446:         JUMPE TAC1,DECIN
447:         CAIE TAC1," "
448:         CAIN TAC1,"     "
449:         JRST DECIN
450:         CAIG TAC1,"9"
451:         CAIGE TAC1,"0"
452:         POPJ PDP,
453:         SUBI TAC1,"0"
454: 
455: DECIN1: ILDB AC1,TAC
456:         CAIE AC1,"-"
457:         CAIN AC1,"/"
458:         JRST CPOPJ1
459:         CAIE AC1,15
460:         CAIN AC1,12
461:         JRST CPOPJ1
462:         CAIG AC1,"9"
463:         CAIGE AC1,"0"
464:         POPJ PDP,
465:         SUBI AC1,"0"
466:         IMULI TAC1,=10
467:         ADD TAC1,AC1
468:         JRST DECIN1
    ONCE page# 0013 next  prev
470: IFN 0*FTDISK,<
471: 
472: ;REFRESH DIALOGUE
473: 
474: REF:    MOVE DAT,LINEP          ;DO YOU WANT TO REFRESH?
475:         MOVEI TAC,REF1M
476:         PUSHJ PDP,CONMES
477:         PUSHJ PDP,OPOUT
478:         PUSHJ PDP,GETLIN
479:         POPJ PDP,               ;NO
480:         ILDB DAT,TAC            ;GET FIRST CHAR
481:         CAIE DAT,"Y"            ;Y?
482:         POPJ PDP,               ;NO. DONT REFRESH THE DISK
483:         MOVE DAT,LINEP          ;YES. ARE YOU SURE?
484:         MOVEI TAC,REF2M
485:         PUSHJ PDP,CONMES
486:         PUSHJ PDP,OPOUT
487:         PUSHJ PDP,GETLIN
488:         POPJ PDP,               ;NO
489:         ILDB DAT,TAC
490:         CAIE DAT,"Y"
491:         POPJ PDP,
492: REF3:   PUSHJ PDP,REFRES        ;REFRESH.
493:         MOVE DAT,LINEP          ;OK
494:         MOVEI TAC,REF6M
495:         PUSHJ PDP,CONMES
496:         PUSHJ PDP,OPOUT
497:         MOVE TAC,DUMPPN ;DEC 3.16
498:         MOVEM TAC,REFLAG
499:         POPJ PDP,
500: 
501: REF1M:  ASCIZ /DO YOU WANT TO REFRESH THE DISK? 
502: /
503: REF2M:  ASCIZ /DO YOU REALLY WANT TO REFRESH?
504: /
505: REF6M:  ASCIZ /REFRESHED! FIRST JOB TO LOG IN GETS IN FREE.
506: /
507: >
    ONCE page# 0014 next  prev
509: ;ROUTINE TO READ A LINE FROM OPERATORS CONSOLE
510: ;CALL:  PUSHJ PDP,GETLIN
511: ;       JUST A CR TYPED IN
512: ;       A LINE TYPED IN,TAC SET AS BYTE POINTER
513: 
514: CHREC←TEM       ;CHAR TO TYPE OUT(MUST BE SAME AS SCNSER ROUTINE
515: LINE←TAC1       ;TTY LINE NO.(ALSO SAME AS SCNSER)
516: 
517: 
518: GETLIN: MOVE TAC,LINEP
519:         MOVEI ITEM,0
520: GET1:   PUSHJ PDP,TYI
521:         DATAI TTY,TAC1
522:         ANDI TAC1,177
523:         CAIN TAC1,177           ;RUBOUT?
524:         JRST DELETE
525:         MOVE CHREC,TAC1         ;NO, ECHO CHAR.
526:         PUSHJ PDP,TYO
527:         IDPB TAC1,TAC           ;AND STORE CHAR.
528:         CAIE TAC1,15
529:         AOJA ITEM,GET1
530:         MOVEI CHREC,12          ;OUTPUT LF
531:         PUSHJ PDP,TYO           ;TYPE OUT
532:         MOVE TAC,LINEP          ;RESET BYTE POINTER
533:         JUMPN ITEM,CPOPJ1       ;NULL LINE?
534:         POPJ PDP,               ;YES, DON'T SKIP RETURN
535: 
536: DELETE: JUMPE ITEM,DELET1       ;AT BEGINNING OF LINE?
537:         ADD TAC,[XWD 070000,0]  ;NO, BACK UP BYTE POINTER
538:         TLNE TAC,400000         ;FINISHED THIS WORD YET?
539:         ADD TAC,[XWD 347777,-1] ;YES, BACK UP ADDRESS
540:         MOVEI CHREC,134         ;OUTPUT BACK SLASH
541:         PUSHJ PDP,TYO
542:         SOJA ITEM,GET1
543: 
544: DELET1: MOVEI CHREC,15
545:         PUSHJ PDP,TYO
546:         MOVEI CHREC,12
547:         PUSHJ PDP,TYO
548:         JRST GETLIN
    ONCE page# 0015 next  prev
550: ;ROUTINE TO TYPE A LINE ON OPERATOR CONSOLE
551: ;ECHO CHECK STOPS LINE AND RETURNS
552: ;CALL:  DAT SET TO END OF MESSAGE
553: 
554: OPOUT:  MOVE TAC,LINEP
555:         CONO TTY,1000           ;CLEAR INPUT
556: OPOUT1: CAMN TAC,DAT
557:         POPJ PDP,
558:         CONSZ TTY,40
559:         JRST OPOUT2             ;ECHO CHECK
560:         ILDB CHREC,TAC
561:         PUSHJ PDP,TYO
562:         JRST OPOUT1
563: 
564: OPOUT2: MOVEI CHREC,15
565:         PUSHJ PDP,TYO
566:         MOVEI CHREC,12
567:         PUSHJ PDP,TYO
568:         CONO TTY,1000           ;CLEAR INPUT
569: 
570: ;WAIT TILL OUTPUT BUSY OFF BEFORE TYPING OUT CHAR.
571: 
572: 
573: 
574: TYO:    PUSHJ PDP,APRCHK        ;CHECK CLOCK
575:         CONSZ TTY,20
576:         JRST TYO
577:         DATAO TTY,CHREC         ;DWP FOR TTYSER
578:         POPJ PDP,
579: 
580: ;WAIT TIL INPUT DONE ON BEFORE RETURNING WITH NEXT CHAR.
581: 
582: TYI:    PUSHJ PDP,APRCHK
583:         CONSO TTY,40
584:         JRST TYI
585:         POPJ PDP,
586: 
587: ;CHECK APR FOR CLOCK FLAG SO TIME USER TYPES IN WILL BE ACCURATE
588: 
589: APRCHK: CONSO APR,1000          ;IS CLOCK FLAG ON?
590:         POPJ PDP,               ;NO
591:         CONO APR,1000           ;YES, CLEAR CLOCK FLAG
592:         AOS TIME                ;INCREMENT TIME
593:         POPJ PDP,
    ONCE page# 0016 next  prev
595: ;CONSTANTS AND PUSH DOWN LIST
596: 
597: LINEP:  POINT 7,LINBUF  ;INPUT AND OUTPUT LINE BUFFER
598: LINBUF: BLOCK 30
599: ONCEPN←100
600: ONCEPD: BLOCK ONCEPN    ;PUSH DOWN LIST
601: P2PLN←100
602: P2PDL:  BLOCK P2PLN
603: SYSDAT: BLOCK 2
604: 
605: ;MESSAGES
606: 
607: TODATE: ASCIZ /
608: TYPE TODAY'S DATE AS ABOVE.
609: /
610: 
611: 
612: DATPTR: POINT 7,SYSDAT  ;POINTER TO SYSTEM DATE
613: 
614: TIMEM:  ASCIZ /
615: TYPE 4 DIGIT TIME.
616: /
617: 
618: IFE FTDDT,<
619: NDDTM:  ASCIZ/NON-DDT SYSTEM!!
620: /
621: >
    ONCE page# 0017 next  prev
623: ;206 RESTARTS -- USER AND EXEC MODE
624: BEGERR: DATAO   CTY,[7]                 ;DING FOR HIM
625:         SETZM   SYSTHERE                ;SYSTEM'S NOT ON L'SCOPE
626: IFN FTDSWP,<
627:         SETZM   DDTSUM
628:         SETZM   SYMLOC                  ;NO SWAPPING DDT YET
629: >
630:         HALT    BEGIN
631: BEGIN: SETOM   SYSTHERE                ;SET TO SAY SYSTEM IS ON LIBRASCOPE
632:         MOVE    P,[-ERRPLN,,ERRPDL-1]   ;GET A PDL
633:         JSP     TAC,.+1                 ;206 START:  WRITE OUT SYSTEM.
634:         TLNE    TAC,USRMOD              ;ARE WE IN USER MODE?
635:         JRST    USBG1                   ;USER MODE, SPECIAL HACK.
636:         CONO 200000                     ;RESET THE WORLD
637:         PUSHJ   P,FMCHK                 ;MAKE SURE WE HAVE FAST AC'S
638:         JRST    BEGIN                   ;NO. LOOK AGAIN.
639:         CONSZ   DSK,400                 ; IS THE DISK ON-LINE?
640:         JRST    BEGERR                  ; NO, EXIT NOW.
641: IFN FTDSWP,<
642:         SKIPA   TAC,DDTSYM
643: USBG1:  MOVE    TAC,JOBSYM
644:         MOVEM   TAC,SYMLOC
645:         MOVE    TAC,[XWD DDTA-DDTEND,DDTA]      ;GET IOWD FOR CHECKSUM
646:         PUSHJ   P,CHECK                 ;MAKE A CHECKSUM
647:         MOVEM   TAC1,DDTSUM             ;SAVE DDT CHECKSUM
648: ;>      USBG1:                          ;DEFINED AT LAST.
649:         MOVE    TAC,[JRST 4,203]        ;SET UP LOCATION 206
650:         MOVEM   TAC,SYSDSP+6            ;STUFF SYSTEM INITIALIZATION ADDRESS
651:         JSP     TAC,.+1
652:         TLNE    TAC,USRMOD              ;USER MODE?
653:         JRST    USRBEG                  ;YES.  GO OFF AND FAKE IT.
654:         MOVE TAC,[LOD20,,20]
655:         BLT TAC,27                      ;MAKE SURE 20 LOADER IS GOOD
656:         CONO    IOP,100                 ;SET UP IOP FOR WRITING.
657:         DATAO   IOP,[XWD -=76*2000,0]   ;ALL OF LOWER CORE.
658:         DATAO   DSK,SYSBAND             ;BAND FOR SYSTEM STORAGE
659:         CONSO   IOP,IOPANY!IOPJDN       ;WAIT UNTIL DONE.
660:         JRST    .-1                     ;LOOP
661:         CONSO   IOP,IOPANY              ;ERRORS?
662:         CONSZ   DSK,3370                ;ERRORS?
663:         JRST    BEGERR                  ;LOSE
664:         JRST    SYSDSP                  ;START UP SYSTEM.
665:         
666: ;HERE IF USER SAYS
667: ;GET SYSTEM
668: ;S 206
669: USRBEG: CALLI   0                       ;RESET SELF.
670:         SETO    TAC,
671:         CALLI   TAC,400066              ;SETPRV - GET CURRENT PRIVILEGES.
672:         TLON    TAC,PRIPRV+FBWPRV       ;HAVE WE GOT PRIVILEGE?
673:         JRST    [OUTSTR [ASCIZ/LOSER/]
674:                 CALLI   12]                     ;NOPE.
675:         CALLI   TAC,400066              ;GET IT.
676:         MOVEI   AC1,140                 ;FIRST ADDRESS TO WRITE.
677:         MOVE    TAC,SYSBND              ;GET THE SYSTEM BAND.
678:         TRO     TAC,400000              ;MAKE IT ABSOLUTE.
679:         MOVE    AC2,JOBREL              ;GET THIS SIZE
680:         SUBI    AC2,137                 ;LESS OFFSET, LEAVES WORD COUNT
681:         MOVEI   AC3,3                   ;START IN SECTOR 3 TO ACCOUNT FOR
682:                                         ;OFFSET.
683:         FBWRT   TAC,AC1                 ;ASK SYSTEM TO WRITE THIS.
684:         OUTSTR  [ASCIZ/FBERROR: SYSTEM WRITE
685: /]
686:         MOVEI   AC2,=76*2000-1          ;THIS IS THE SIZE OF AN L'SCOPE BAND
687:         SUB     AC2,JOBREL              ;THIS IS THE SIZE OF NEXT XFER
688:         JUMPE   AC2,BEGUX               ;JUMP IF THERE'S NO SPACE TO FILL UP
689:         MOVE    AC3,JOBREL
690:         ADDI    AC3,1
691:         LSH     AC3,-5                  ;COMPUTE SECTOR
692:         FBWRT   TAC,AC1                 ;MAKE SURE ENTIRE BAND IS READABLE
693:         OUTSTR  [ASCIZ/FBERROR CLEARING BAND
694: /]
695: BEGUX:  MOVEI   AC2,101                 ;(PAD TO 137 WITH ZEROES)
696:         SETZ    AC3,                    ;SECTOR
697:         MOVEI   AC1,LODTAB              ;PLACE TO START.
698:         MOVE    TAC1,JOBSYM
699:         MOVEM   TAC1,LODSYM             ;SAVE CYMBALS
700:         MOVE    TAC1,JOBREL
701:         MOVEM   TAC1,LODREL             ;SAVE JOBREL
702:         FBWRT   TAC,AC1
703:         OUTSTR  [ASCIZ/FBERROR: LOW CORE WRITE
704: /]
705:         CALLI   12
    ONCE page# 0018 next  prev
707: ;PUNCH SYSTEM LOADER WITH CURRENT LOC OF SYSTEM ON LIBRASCOPE
708: SYSLOD:
709:         MOVE 1,SYSBAND
710:         MOVEM 1,LODTAB+SBAND    ;GET BAND DYNAMICALLY
711:         JSP 2,FEED
712:         CONSZ PTP,20
713:         JRST .-1
714:         CONO PTP,50             ;CLEAR PAPER TAPE PUNCH AND SET BINARY MODE
715:         SKIPA 1,[-LODLEN,,LODTAB]
716: PUNXT0: TDZA 2,2
717: PUNNXT: MOVE 2,(1)
718:         MOVEI 3,6
719: PUN1:   ROT 2,6
720:         CONSZ PTP,20
721:         JRST .-1
722:         DATAO PTP,2
723:         SOJG 3,PUN1
724:         AOBJN 1,PUNNXT
725:         TLNN 1,-1
726:         JRST PUNXT0             ;PUNCH EXTRA WORD OF ZERO TO STOP PTR ON READIN
727:         JSP 2,FEED
728:         HALT SYSLOD
729: 
730: FEED:   MOVEI 1,=100
731: FEED1:  CONSZ PTP,20
732:         JRST FEED1
733:         CONO PTP,10
734:         DATAO PTP,[0]
735:         SOJG 1,FEED1
736:         JRST (2)
737: 
738: LODTAB: XWD -LODLEN+1,0
739: PHASE 1
740: LODIT:  MOVE BLTAC              ;1 THIS IS LOC 20 BE CAREFUL
741:         SETZM 20                ;2
742:         BLT 377777              ;3
743: LODLUP: DATAO IOP,SLOC          ;4
744:         DATAO DSK,SBAND         ;5
745:         CONSO IOP,IOPANY!IOPJDN ;6
746:         JRST .-1                ;7
747:         CONSO IOP,IOPANY        ;10
748:         CONSZ DSK,3370          ;11
749:         HALT LODLUP             ;12
750:         JRST SYSDSP             ;13
751: SLOC:   XWD -=76*2000,0         ;14
752: SBAND:  100B23                  ;15 REALLY TO BE FILLED IN BY SYSLOD
753: BLTAC:  20,,21                  ;16
754:         JRST LODIT              ;17 TO START IT
755: DEPHASE
756: LODLEN←←.-LODTAB
757:         BLOCK   20-LODLEN       ;BLOCK UP TO BOUNDARY, IF NEEDED.
758: LOD20:  CONO    PTR,60          ;20 LOADER
759:         CONSO   PTR,10
760:         JRST    21
761:         DATAI   PTR,26
762:         CONSO   PTR,10
763:         JRST    24
764:         0
765:         JRST    21
766:         BLOCK   6               ;GET TO 36
767: LODSYM: 0
768: LODREL: 0
769:         BLOCK   41              ;PAD TO AT LEAST 101 WORDS FROM LODTAB
    ONCE page# 0019 next  prev
771: DEFINE NPRINT(TAG,START,FINISH)
772: <
773:         OUTSTR[ASCIZ/
774: TAG/]
775:         MOVEI TAC,FINISH-START
776:         PUSHJ P,DECOUT
777: >
778: 
779: DECOUT: IDIVI TAC,=10
780:         HRLM TAC1,(P)
781:         JUMPE TAC,.+2
782:         PUSHJ P,DECOUT
783:         HLRZ TAC,(P)
784:         ADDI TAC,60
785:         OUTCHR TAC
786:         POPJ P,
787: 
788: START: MOVE    P,[IOWD 20,SPDL]        ;FOR USE WITH DUMP COPY OF SYSTEM
789:         OUTSTR  CONFIG          ;SYSTEM NAME
790:         NPRINT  <IMPURE PART    >,0,TPOPJ1
791:         NPRINT  <SYSTEM STUFF   >,TPOPJ1,DEVBEG
792:         NPRINT  <DEV SERVICES   >,DEVBEG,PATCH
793:         NPRINT  <DDT & SYSMAK   >,PATCH,BLTBEG
794:         NPRINT  <ONCE ONLY      >,BLTBEG,THEEND
795:         HLRO    TAC,116         ;JOBSYM
796:         MOVNS   TAC
797:         OUTSTR  [ASCIZ/
798: SYMBOLS         /]
799:         PUSHJ   P,DECOUT
800:         NPRINT  <DDT SWAPPED    >,0,DDT
801:         CALLI   12
802: 
803: SPDL:   BLOCK 20
804: 
805: LITVAR
806: THEEND:
807:         BEND    ONCE
808: 
809:         END     SYSDSP          
 EOF: ONCE end-of-file. cnt=18